package com.atguigu.gmall.order.service;

import com.atguigu.gmall.model.enums.ProcessStatus;
import com.atguigu.gmall.model.order.OrderInfo;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * @author Sanmier
 * @create 2020-12-18 18:36
 */
public interface OrderService extends IService<OrderInfo>{

    // 保存订单
    Long saveOrder(OrderInfo orderInfo);


    // 生产流水号
    String getTradeNo(String userId);


    // 比较流水号
        // userId 获取缓存中的流水号
        // tradeCodeNo   页面传递过来的流水号
    boolean checkTradeNo(String tradeNo,String userId);


    // 删除流水号
    void deleteTradeNo(String userId);


    // 验证库存
    boolean checkStock(Long skuId, Integer skuNum);


    // 取消订单
    void execExpiredOrder(Long orderId);


    // 更新订单状态
    void updateOrderStatus(Long orderId, ProcessStatus processStatus);


    // 根据订单Id 查询订单信息
    OrderInfo getOrderInfo(Long orderId);


    // 根绝订单id发送消息给库存
    void sendOrderStatus(Long orderId);


    // 把orderInfo转换成map
    Map initWareOrder(OrderInfo orderInfo);


    //根绝orderId、wareSkuMap获取子订单集合
    List<OrderInfo> orderSplit(String orderId, String wareSkuMap);


    //更新近期订单
    void execExpiredOrder(Long orderId,String flag);
}
